package com.woniuxy.sales.service;

import com.woniuxy.sales.model.entity.OrderDetails;
import com.woniuxy.sales.model.entity.Orders;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.sales.model.vo.CartItemVo;
import com.woniuxy.sales.model.vo.OrderVo;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 【订单表】
 */
public interface OrdersService extends IService<Orders> {

    /**
     * 查询某个用户：指定状态的订单，如果没有指定状态，则查询所有的订单
     *
     * @param userId 用户id
     */
    List<OrderVo> queryOrder(Integer userId, Integer status);

    String createOrder(Integer userId, Integer addressId);

    /**
     * 支付订单
     *
     * @param orderId
     * @return
     */
    String pay(Long orderId);

    /**
     * 更新订单的状态
     *
     * @param orderId     订单ID
     * @param orderStatus 订单状态
     */
    void updateOrderStatus(Long orderId, Integer orderStatus);

    /**
     * 通过订单项更新库存
     *
     * @param orderDetail
     */
    void updateGoodStoreCount(OrderDetails orderDetail);

    @Transactional
    void cancelOrder(Long orderId, Integer userId);

    String createBySelection(Integer userId, List<CartItemVo> cartItemVos, Integer addressId, Double totalPrice);

    String createByBuy(Integer userId, CartItemVo cartItemVo, Integer addressId);


}
